import 'package:flutter/material.dart';

import 'package:get/get.dart';
import 'package:getx_learn/app/common/widgets/widgets.dart';
import 'package:getx_learn/app/routes/app_pages.dart';

import '../controllers/dependency_injection_controller.dart';

class DependencyInjectionView extends GetView<DependencyInjectionController> {
  const DependencyInjectionView({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: getAppBar(context: context, title: "依赖注入"),
      body: ListView(
        children: [
          Text("""
          Get.put：普通模式
          Get.lazyPut：懒加载模式
          
          
               即使不使用控制器实例也会被创建
               tag将用于查找具有标签名称的实例
               控制器在不使用时被处理，但如果永久为真，则实例将在整个应用程序中保持活动状态
              MyController myController = Get.put(MyController(), permanent: true);
               MyController myController = Get.put(MyController(), tag: "instancel", permanent: true);
          
               实例将在使用时创建
               它类似于'permanent'，区别在于实例在不被使用时被丢弃
               但是当它再次需要使用时，get 将重新创建实例
               Get.lazyPut(()=> MyController());
               Get.lazyPut(()=> MyController(), tag: "instancel");
          
               Get.put 异步版本
               Get.putAsync<MyController>(() async  => await MyController());
          
               每次都将返回一个新的实例
               Get.create<MyController>(() => MyController());
          
          """),

          Divider(),

          ListTile(
            title: Text("Get.put"),
            subtitle: Text("普通模式"),
            onTap: (){
              Get.toNamed(Routes.GET_PUT_PAGE1);
            },
          ),

          Divider(),

          ListTile(
            title: Text("Get.lazyPut"),
            subtitle: Text("懒加载模式"),
            onTap: (){
              Get.toNamed(Routes.GET_LAZY_PUT_PAGE1);
            },
          ),
        ],
      ),
    );
  }
}
